/********************************************************************
	TABAL ENGINE - 2012/10/28
	author:		Marc Cuscullola
	
	purpose:	Angle functions
*********************************************************************/
#pragma once

#ifndef __MATH_ANGLES__INCLUDED_H__
#define __MATH_ANGLES__INCLUDED_H__

#include <math.h>
#include "MathTypes.h"
#include "MathAngles.inl"

namespace Math
{
namespace Angles
{
	template <typename T>	inline T		Sqrt    (T _val);
	template <typename T>	inline T		Sin     (T _ang);
	template <typename T>	inline T		Cos     (T _ang);
	template <typename T>	inline T		Tan     (T _ang);
	template <typename T>	inline void		SinCos  (T _ang, T& s_,T& c_);
	template <typename T>	inline T		ASin    (T _val);
	template <typename T>	inline T		ACos    (T _val);
	template <typename T>	inline T		ATan    (T _val);
	template <typename T>	inline T		ATan2   (T _x,T _y);

	template <typename T>	inline T		PiTimes	(T _times = 1.f);
	template <typename T>	inline T		Deg2Rad (T deg);
	template <typename T>	inline T		Rad2Deg (T rad);

	inline void								CanonizeAngle (float& _fAngle);

} //namespace Utils
} //namespace Math

#endif //__MATH_ANGLES__INCLUDED_H__
